package kr.ac.ssu.ailab.Model.Data.Agent;

import java.awt.Point;
import java.util.ArrayList;
import java.util.Vector;

import kr.ac.ssu.ailab.Model.Data.Cell;

/**
 * @class MSG
 * @brief Agent와 Agent Manager 역할을 하는 AgentGroup간의 communication 을 위한 Class
 *        target agent의 ID를 지정, 기본적인 움직임 부터 Environment에 대해 Agent 가 취해야 할 행동들을
 *        정의하고, 리액션을 받는다.
 * */
public class MSG
{
	public static final int WAIT = 0x000;
	public static final int MOVE = 0x001;
	public static final int STOP = 0x002;
	public static final int AVOID = 0x003;
	public static final int COVER = 0x004;
	public static final int ATTACK = 0x005;
	public static final int HIDE = 0x006;
	public static final int BEING_ATTACKED = 0x007;

	private int order;
	private String objectID;
	private Vector<Cell> path;
	private Integer damage;

	/**
	 * 생성자
	 * @param order
	 * @param objectID
	 */
	public MSG(int order, String objectID)
	{
		this.order = order;
		this.objectID = objectID;
	}

	/**
	 * 생성자
	 * @param order
	 * @param path
	 */
	public MSG(int order, Vector<Cell> path)
	{
		this.path = new Vector<Cell>();
		this.order = order;
		this.path = path;
	}
	/**
	 * 생성자
	 * @param order
	 * @param damage
	 */
	public MSG(int order, Integer damage)
	{
		this.order = order;
		this.damage = damage;
	}

	/**
	 * 어떤 메시지인지 확인하는 메소드
	 * @return
	 */
	public int getOrder()
	{
		return this.order;
	}

	/**
	 * 메시지가 무브일때 경로 얻어오기
	 * @return
	 */
	public Vector<Cell> getPath()
	{
		return this.path;
	}
	
	/**
	 * 메시지가 데미지 일때 데미지 얻어오기
	 * @return
	 */
	public Integer getDamage()
	{
		return this.damage;
	}

}
